var model=require('../schema/user');
exports.model=model;

exports.find_name_pwd=function(name,pwd,call){
    model._find_name_pwd(name,pwd,call);//静态方法  
}
exports.update=function(obj,call){
    model.updateOne({_id:obj._id},{name:obj.name,state:obj.state},call)
}
exports.create=function(obj,call){
    model.find({name:obj.name}).exec((err,doc)=>{
        if(doc.length>0){
            call(new Error('此用户名已被使用'),doc)
        }else{
            new model(obj).save((err,doc)=>{
                call(err,doc);
            })
        }
    })
}
exports.findpage=function(pagesize,pageno,call){
    model.find().limit(pagesize).skip((pageno-1)*pagesize).exec((erro,doc)=>{
        model.find().exec((err,result)=>{
            var d={
                list:doc,
                total:result.length,
                pageNo:pageno
            }
            call(err,d);
        })
    });
}
exports.remove=function(id,call){
    model.findOneAndRemove({_id:id},call)
}



var a=new model({state:1});
// a.findstate(function(err,doc){//实例方法使用
//     console.log(doc)
// })
//query 查询使用
// model.find().byname('s').bystate('0').exec(function(err,doc){
//     console.log(doc);
// })
//新增多条
// model.create(
//     {name:'sbt',state:0,pwd:'ccs'},
//     {name:'sta',pwd:'cd',state:0},
//     function(err,...doc){ //用model
//     console.log(doc);
// })
//数组新增多条
// model.insertMany([
//     {name:'stabc',pwd:'2',state:1},
//     {name:'bstea',pwd:'32',staet:0}
// ],function(err,doc){
//     console.log(doc);
// })

//查询 参数二是显示的列   skip跳过前2条
// model.find({name:{'$gt':2}},{name:1},{skip:2}).exec((err,doc)=>{//name 大于2
//     console.log(doc);
// })
// model.find({name:/s/ig}).exec((err,doc)=>{//正则
//     console.log(doc);
// })
// model.findById('5afb980a7bdbf42a5fe5a208',(err,doc)=>{//_id 查找
//     console.log(doc)
// })
// model.findOne({name:/st/ig}).exec((err,doc)=>{//返回要求的第一个
//     console.log(doc)
// })
//状态为1只输出name字段，并且name最少的那条
// model.findOne({state:1},'name',{lean:true}).exec((err,doc)=>{
//     console.log(doc);
// })

//$where 函数查询
// model.find({$where:'this.name==this.state'}).exec((err,doc)=>{
//         console.log(doc);
// })
// model.find({$where:function(){
//     return this.name==this.state
// }}).exec((err,doc)=>{
//     console.log(doc);
// })

//更新 条件，更新属性，
//optins upsert如果不存在则创建新记录  multi是否更新多个查询记录。
// model.update({name:'3'},{name:'33new3',pwd:'33new3'}).exec((err,doc)=>{
//     console.log(doc)//{ n: 1, nModified: 1, ok: 1 }
// })
//model.updateMany 用法和update一样，只是它默认更新多个文档
//model.updateOne 只更新一条
//查询修改
// model.find({state:0},function(err,doc){
//     doc.forEach((item,index)=>{
//         item.state=1;
//         item.save();
//     })
// })
//查找第一条，并修改，doc返回的是查找的doc而不是最新的
// model.findOneAndUpdate({name:'st'},{name:'stnew',pwd:'stnew'}).exec((err,doc)=>{
//     console.log(doc);
// })

//文档删除  会删除多条
// model.remove({name:/33new/ig}).exec((err,doc)=>{
//     console.log(doc)//{ n: 2, ok: 1 }
// })
//查询出来的doc可以用remove来删除
//查找符合第一条并删除
// model.findOneAndRemove({name:/sta/ig}).exec((err,doc)=>{
//     console.log(doc);//返回删除的doc
// })

//查询后处理
//sort 排序 sort("age")从小到大  sort("x -age")x从小到大age从大小到
//skip跳过 skip(1)跳过一条
//limit限制 limit(2)显示2条
//select显示字段 select("name age -_id")    select({name:1,age:1,_id:0})
//exec执行 
//count计数  count(call)
//distinct去重  distinct('x',function(err,distinct));  返回x的值

